Amazon GuardDutyの通知をカスタマイズしてSlackに通知してみた

Amazon GuardDutyの通知をカスタマイズしてSlackに通知してみた

Clock Icon2023.09.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

先日AWS Chatbotの通知内容をカスタマイズできるアップデートがありました。

この機能を使うことで、Slackへの通知をより分かりやすくカスタマイズできるようになりました。今回はこのアップデートを活用してAmazon GuardDutyの通知をカスタマイズして通知してみます。

今までのChatbot経由の通知はこのような形式ですが、

こんな感じにカスタマイズしてみました。

やってみる

構成は「GuardDuty → EventBridgeルール → SNS → Chatbot → Slack」です。 SNSとChatbotの作成については既に作成済みの前提で進めます。未作成の場合は前述のアップデートブログを参考にしてください。

EventBridgeルールの作成

EventBridgeルールを作成していきます。

イベントパターンはテストのため全てのイベントを対象としています。

制御したい場合は以下のブログを参照してください。

ターゲットにはSNSトピックを指定します。

追加設定を開いて、「ターゲット入力を設定」から入力トランスフォーマーを選択してください。

入力トランスフォーマーを設定のボタンから以下を設定します。

入力パス

{
    "aws_account_id": "$.detail.accountId",
    "finding_id": "$.detail.id",
    "finding_type": "$.detail.type",
    "finding_title": "$.detail.title",
    "finding_description": "$.detail.description",
    "severity": "$.detail.severity",
    "region": "$.detail.region",
    "time": "$.time"
}

テンプレート

{
    "version": "1.0",
    "source": "custom",
    "content": {
        "textType": "client-markdown",
        "title": ":information_source: GuardDuty Finding | <region> | Account: <aws_account_id>",
        "description": "GuardDutyが脅威を検知しました。イベント内容を確認してください。 \n • *タイトル*:  <finding_title>\n • *検出結果タイプ*:  <finding_type>\n • *詳細*:  <finding_description>\n • *AWSアカウントID*:  <aws_account_id>\n • *リージョン*:  <region>\n • *緊急度*:  <severity>\n • *日時*:  <time>",
        "nextSteps": [
            "AWSコンソールで詳細を確認しましょう。\n https://<region>.console.aws.amazon.com/guardduty/home?region=<region>#/findings?search=id%3D<finding_id>&macros=current&fId=<finding_id>",
            "AWSドキュメントを確認し、対応を検討しましょう。\nhttps://docs.aws.amazon.com/ja_jp/guardduty/latest/ug/guardduty_finding-types-active.html"
        ]
    }
}

あとは保存して構築は完了です。

通知テスト

以下のブログを参考にサンプルイベントを1つ起こしてみます。

以下のコマンドをCloudShellで実行してみます。

aws guardduty create-sample-findings \
  --detector-id $(aws guardduty list-detectors --query 'DetectorIds[0]' --output text) \
  --finding-types "Backdoor:EC2/DenialOfService.Dns"

すると、すぐにGuardDutyの通知がSlackに届きました。

以前の通知内容よりも情報が増え、次のアクションが明確になったかと思います。

まとめ

GuardDutyの通知をカスタマイズしてSlackへ通知してみました。Chatbotを経由した元の通知でも十分見やすいですが、カスタマイズできることによって社内の運用により活用しやすくなったと思います。

今回作成した入力トランスフォーマーは一例なので、ぜひ運用に合わせて通知内容をカスタマイズしてみてください。

参考

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.